package com.wnzt.baszh.dao;

import java.util.List;
import java.util.Map;

import com.wnzt.baszh.entity.Tsysuser;
import com.wnzt.baszh.util.common.PageHelper;

/**
 * 系统管理和维护页面数据库操作层
 */

public interface ISystemMaintenDao {

	/**
	 * 加载所有图片模板资源
	 */
	PageHelper getImageTempMainData(int page, int rows);

	/**
	 * 新增图片模板的时候返回改列id主键
	 */
	Integer AddImageTempMain(Map<String, Object> map);

	/**
	 * 修改图片模板
	 */
	void EditImageTempMain(Map<String, Object> map);

	/**
	 * 删除图片模板
	 */
	void DeleteImageTempMain(String fID);

	/**
	 * 查询所有图片模板
	 */
	List CheckAllImageTempMain();

	/**
	 * 保存水印
	 */
	Map<String, Object> SaveWatermark(Map<String, Object> map);

	/**
	 * 加载水印
	 */
	List<Map<String, Object>> CheckWatermark();

	/**
     * 按条件查询用户信息
     * @param params  查询参数
     * @return 用户信息
     */
    public PageHelper findUsers(Map<String, Object> params);
    
    /**
     * 查询医院中医护人员姓名
     * @return  医护人员姓名集合
     */
    public List<Map<String, Object>> findUsername();
    
    /**
     * 查询用户角色(用户组)
     * @return 角色集合
     */
    public List<Map<String, Object>> findRoles();
    
    /**
     * 查询医院科室
     * @return 科室集合
     */
    public List<Map<String, Object>> findDepartments();
    
    /**
     * 查询医院科室
     * @return 科室集合
     */
    public List<Map<String, Object>> findDepartmentsWithoutQy(Map<String, Object> params);
    
    /**
     * 查询医院病区
     * @return 病区集合
     */
    public List<Map<String, Object>> findBQ();
    
    /**
     * 查询医院病案室内部分组
     * @return 分组集合
     */
    public List<Map<String, Object>> findGroups();
    
    /**
     * 添加用户
     * @param params 新增用户数据
     */
    public void addUser(Map<String,Object> params)throws Exception;
    
    /**
     * 修改用户
     * @param params  用户修改数据集合
     */
    public void updateUser(Map<String,Object> params)throws Exception;
    
    /**
     * 删除用户
     * @param idStr 用户id
     */
    public void deleteUser(String idStr);
    
    /**
     * 查询用户角色菜单模块对应关系
     * @return 角色菜单模块集合
     */
    public List<Map<String, Object>> findRoleList();
    
    /**
     * 查询菜单模块
     * @return 菜单模块集合
     */
    public List<Map<String, Object>> findModules();
    
    /**
     * 根据系统标识加载菜单模块
     * @param fsysflag
     * @return
     */
    public List<Map<String, Object>> findModulesBySys(String fsysflag);

    /**
     * 添加角色
     * @param params 新增角色数据
     */
    public void addRole(Map<String,Object> params);
    
    /**
     * 修改角色
     * @param params 更新的数据集合
     */
    public void updateRole(Map<String,Object> params, Map<String, Object> roleParams);
    
    /**
     * 删除角色
     * @param idStr 角色id
     */
    public void deleteRole(String idStr);
    
    /**
     * 查询菜单列表
     * @param fsysflag
     * @param module
     * @return
     */
    public List<Map<String, Object>> findMenuListBySysAndModule(String fsysflag, String module);
    
    /**
     * 查询菜单列表
     * @return
     */
    public List<Map<String, Object>> findMenuList(String fsysflag);
    
    /**
     * 按模块查询菜单
     * @param module 模块名
     * @return 模块对应菜单列表
     */
    public List<Map<String, Object>> findModuleMenus(String module);
    
    /**
     * 添加模块
     * @param params 新增模块数据
     */
    public void addModule(Map<String,Object> params);
    
    /**
     * 修改模块
     * @param params 更新的数据集合
     */
    public void updateModule(Map<String,Object> params, Map<String,Object> moduleParams);
    
    /**
     * 删除模块
     * @param idStr 模块id
     */
    public void deleteModule(String idStr);
    
    /**
     * 保存模块菜单
     * @param params
     */
    public void saveModuleMenu(Map<String,Object> params);
    
    /**
     * 修改用户密码
     * @param params 更新的数据集合
     */
    public void updatePassword(Map<String,Object> params);
    
    /**
     * 查询模块列表
     * @param name
     * @return
     */
    public List<Map<String, Object>> findModuleList(String name);
    
    /**
     * 保存角色模块
     * @param params
     */
    public void saveRoleModule(Map<String,Object> params);
    
    /**
     * 查找所有用户信息
     * @param id 注册用户的id
     * @return 用户信息
     */
    public List<Map<String, Object>> getUsers(String id);
    
    /**
     * 查找所有角色信息
     * @param id 角色id
     * @return 用户信息
     */
    public List<Map<String, Object>> getRoles(String id);
    
    /**
     * 查找所有模块信息
     * @param id 模块id
     * @return 用户信息
     */
    public List<Map<String, Object>> getModules(String id);
    
    /**
     * 查询用户类型
     * @return 类型集合
     */
    public List<Map<String, Object>> findUserTypes();
    
    /**
     * 查找工作科室列表
     * @return
     */
    public List<Map<String, Object>> findWorkRooms();
    
    /**
     * 按用户查询工作科室
     * @param user
     * @return
     */
    public List<Map<String, Object>> findUserWorkRooms(String user);
    
    /**
     * 按用户查询工作科室及全院
     * @param user
     * @return
     */
    public List<Map<String, Object>> findUserWorkroomsAndQy(String user);
    
    /**
     * 按菜单编号查询菜单内容项
     * @param menuCode 菜单编号
     * @return 菜单对应内容项
     */
    public List<Map<String, Object>> findMenuContents(String menuCode);
    
    /**
     * 保存模块对应菜单的内容
     * @param params
     */
    public int saveMenuContents(Map<String,Object> params);
    
    /**
     * 查找页面选择的内容
     * @param params
     * @return 返回选中的内容
     */
    public List<Map<String, Object>> findCheckPC(Map<String,Object> params);
    
	/**
	 * 将数据录入操作日志表里面
	 */
	public void saveLog(Map<String, Object> map);
	
	/**
	 * 权限设置检查权限名称唯一性
	 */
	public List checkModuleName(String moduleName,String fsysflag);
	
	/**
	 * 查询系统列表
	 * @return
	 */
	public List<Map<String, Object>> findSystems();
	
	/**
     * 查询系统信息
     * @return
     */
	public List<Map<String, Object>> findSystemInfo();
	
	/**
     * 查找工作病区列表
     * @return
     */
    public List<Map<String, Object>> findDistricts();
    
    /**
     * 查询医院病区
     * @return 科室集合
     */
    public List<Map<String, Object>> findDistrictList();
    
    /**
     * 按用户查询工作病区
     * @param user
     * @return
     */
    public List<Map<String, Object>> findUserDistrict(String user);
    
    /**
     * 按用户统一工号查找用户工号
     * @param user
     * @return
     */
    public List<Map<String, Object>> findUserNum(String number);
    
    /**
     * 查看所有借阅目的
     * @param user
     * @return
     */
	List<Map<String, Object>> findBorrwPurpose();
	
	/**
     * 查看所有借阅目的下的审核级别
     * @param user
     * @return
     */
	List<Map<String, Object>> findAuditLevel(Object collection);

	/**
     * 保存审核级别
	 * @param map 
     * @return
     */
	Object saveAuditorLevel(Map<String, String> map);

	/**
     * 修改审核级别
	 * @param map 
     * @return
     */
	Object updateAuditorLevel(Map<String, String> map);

	/**
     * 删除审核级别
     * @return
     */
	Object DeleteAuditorLevel(String childrenid, String parentid);

	/**
     * 添加用户到审核级别
     * @return
     */
	Object addUserToAuditorLevel(String childrenid, String fcodes);

	/**
     * 根据审核级别加载该审核级别下的用户
     * @return
     */
	PageHelper loadConfigureUserSelect(String type, String nodeid, int page,int rows);

	/**
     * 根据用户工号获取用户的所有访问权限设置
	 * @param rows 
	 * @param page 
     * @return
     */
	PageHelper getUserAccessPermis(String fcode, int page, int rows);

	/**
	 * 根据用户工号保存该用户的访问权限
	 * return
	 */
	boolean saveAccessSettings(Map<String, String> map);

	/**
	 * 根据权限fid修改一列权限信息
	 * return
	 */
	boolean updateAccessSettings(Map<String, String> map);

	/**
     * 保存该系统访问权限
     * return
     */
    boolean saveSystemSettings(Map<String, String> map);

    /**
     * 根据id修改系统访问权限
     * return
     */
    boolean updateSystemSettings(Map<String, String> map);
	
	/**
	 * 根据用户工号获取该用户的访问权限ip地址
	 * return
	 * @param fxtcode 
	 * @param operation 
	 * @param fid 
	 */
	Object getAllUserIp(String fcode, String fxtcode, String fid, String operation);

	/**
	 * 根据权限fid修改一列权限信息
	 * return
	 */
	boolean DeleteAccessAdressById(String fid);

	/**
	 * 根据权限编号或名称查找权限
	 * return 
	 */
	PageHelper findRoleListByNum(String nameNum, int page, int rows);

	/**
	 * 查找所有的借阅目的
	 * return 
	 */
	PageHelper getBorrowPurpose(int page, int rows);

	/**
	 * 添加借阅目的
	 * return 
	 */
	Object addBorrowPurpose(String fJYMDBH, String fNAME, String fZJC);

	/**
	 * 修改借阅目的
	 * return 
	 */
	Object editBorrowPurpose(String fID, String fJYMDBH, String fNAME, String fZJC);

	/**
	 * 删除借阅目的
	 * return 
	 */
	Object DeleteBorrowPurpose(String fID);

	/**
	 * 获取所有的借阅目的
	 * return 
	 */
	Object CheckAllBorrowPurpose();

	/**
	 * 获取所有个性化病案模板
	 * return 
	 * @param tempid 
	 * @param userObject 
	 */
	Object loadUserImgDataByTemp(Tsysuser userObject, String tempid);

	/**
	 * 删除个性化病案模板
	 * return 
	 */
	Object deletePersonalizedTemple(String fid);

	/**
	 * 获取树数据
	 * return 
	 */
	Object getTreeData(String fid);

	/**
	 * 保存用户组浏览权限设置信息
	 * return 
	 */
	Object saveAccessSet(String groupCode, int right, String time, int timeUnit);

	/**
	 * 根据用户组编号获取用户组浏览权限设置信息
	 * return 
	 */
	Object getAccessSet(String groupCode);

	/**
	 * 根据用户组编号获取用户组图片分类模板
	 * return 
	 */
	Object getImgTemple(String groupCode);

	/**
	 * 根据用户组编号获取用户组字段分类模板
	 * return 
	 */
	Object getFieldTemple(String groupCode);

	/**
	 * 根据图片分类模板id加载图片分类权限(阅读、导出、打印)明细表
	 * return 
	 */
	Object findImgTemoleDetail(String fid);

	/**
	 * 根据用户组保存图片分类模板
	 * return 
	 * @param ids 
	 */
	Object saveImgTemple(Map<String, String> map);

	/**
	 * 获取字段信息树
	 * return 
	 */
	List<Map<String, Object>> getFieldTree();

	/**
	 * 根据用户组字段分类模板
	 * return 
	 */
	Object saveFieldTemple(Map<String, String> map);

	/**
	 * 根据字段分类模板id加载该字段模板下的字段信息
	 * return 
	 */
	Object findFieldTemoleDetail(String id);

	/**
	 * 修改图片分类模板系统默认设置项
	 * return 
	 */
	void updateImgMbDefault(String id, String Groupfcode);

	/**
	 * 修改字段分类模板系统默认设置项
	 * return 
	 */
	void updateFiledMbDefault(String id, String Groupfcode);

	/**
	 * 根据字段名称模糊匹配字段
	 * return 
	 */
	Object searchFieldByName(String value);

    /**
     * 根据系统类型访编号访问权限ip地址
     * return
     * @param operation 
     * @param fid 
     */
    Object getAllSystemIp(String fcode, String fid, String operation);

    /**
     * 加载所有系统权限设置
     * return 
     */
    PageHelper loadSystemAccessAdr(int page, int rows);
    
    /**
     * 根据借阅类型id分页加载该借阅类型下所有原因
     * return 
     */
    PageHelper loadReasonsApplitData(String fjymdid, int page, int rows);

    /**
     * 根据借阅类型id添加借阅原因
     * return 
     */
    Object addReasonsApplit(String fjymdid, String fjymdyymc, String fjymdyybh);

    /**
     * 根据借阅原因id修改借阅原因
     * return 
     */
    Object editReasonsApplit(String fid, String fjymdyymc, String fjymdyybh);

    /**
     * 加载借阅类型下所有借阅原因
     * return 
     */
    Object CheckAllReasonsApplit(String fjymdid);
    
    /**
     * 根据id删除借阅类型下借阅原因
     * return 
     */
    Object DeleteReasonsApplit(String fid);
    
    /**
     * 加载所有申请类型
     * return 
     */
    Object loadApplyType();

    /**
     * 从用户表中加载所有用户信息
     * return 
     */
    Object loadUsers();

    /**
     * 根据申请分类id加载审核级别
     * return 
     */
    Object loadExamineLevel(String fid);
    
    /**
     * 根据审核级别ID加载审核人员设置
     * return 
     */
    Object loadExaminePersion(String fid);
    
    /**
     * 添加或修改审核级别，判断是否存在相同的名称
     * return 
     */
    Object checkSpName(String type, String newName, String oldName);
    
    /**
     * 添加审核级别
     * return 
     */
    Object addExamineLevel(String examineName, String applyTypeId);

    /**
     * 修改审核级别
     * return 
     */
    Object editExamineLevel(String examineName, String fid);
    
    /**
     * 根据两者id交换数据的fpx号
     * return 
     */
    void ExchangeFpx(String currentId, String currentFpx, String nextId, String nextFpx);
    
    /**
     * 根据审核级别ID删除该审批级别
     * return 
     */
    Object deleteExamineLevel(String fid);
    
    /**
     * 根据审批人员id删除信息
     * return 
     */
    Object deleteExaminePersion(String fid);

    /**
     * 根据审批人员的id修改申请该审批人员的信息
     * return 
     * @param examineKsName 
     */
    Object editExaminePersion(String fid, String persionCode, String fspks, String examineKsName);

    /**
     * 根据审批级别添加相应的审批人员
     * return 
     * @param examineKsName 
     */
    Object addExaminePersion(String fspjbid, String persionCode, String fspks, String examineKsName);
    
    /**
     * 获取所有个性化病案模板
     * return 
     */
    Object getUserImgShowTemple(Tsysuser userObject);
    
    /**
     * 获取所有个性化字段模板
     * return 
     */
    Object getUserFieldShowTemple(Tsysuser userObject);
    
    /**
     * 保存个性化设置
     * return 
     */
    Object saveInAccessSet(Map<String, Object> map);
    
    /**
     * 获取系统默认字段信息树
     * return 
     * @param fgroupcode 
     */
    List<Map<String, Object>> getFieldInTree(String fgroupcode);
    
    /**
     * 获取用户个性化设置
     * return 
     */
    Object getInAccessSet(String fcode);
    
    /**
     * 保存用户个性化字段模板main
     * return 
     */
    Object saveInFieldTemp(Map<String, Object> map);
    
    /**
     * 保存用户个性化字段分类模板字段信息
     * return 
     */
    Object saveInFieldTemple(Map<String, String> map);
    
    /**
     * 根据字段分类模板id同步加载字段信息
     * return 
     * @param userObject 
     */
    Object loadUserFieldDataByTemp(int mbid, Tsysuser userObject);
    
    /**
     * 根据字段分类模板id删除该模板
     * return 
     */
    Object deleteFieldTemple(int mbid);
    
    /**
     * 保存用户个性化图片模板main
     * return 
     */
    Object saveInImgTemp(Map<String, Object> map);
    
    /**
     * 根据图片分类模板id删除该模板
     * return 
     */
    Object deleteInImgTemple(int mbid);
    
    /**
     * 保存用户个性化图片模板detail
     * return 
     */
    Object saveInImgTemple(int mbid, String tmbidStr);
    
    /**
     * ca序列号
     * @return  医护人员ca集合
     */
    public List<Map<String, Object>> findNetcaSN();
    
    /**
     * 系统管理-获取系统
     * @author [lv tang wei]
     * Describe:
     * @param request
     * @return
     * [2017年6月30日]
     */
    public List<Map<String,Object>> getSystem(Map<String,Object> param)throws Exception;
    
    /**
     * 系统管理-增加系统
     * @author [lv tang wei]
     * Describe:
     * @param request
     * @return
     * [2017年6月30日]
     */
    public void addSystem(Map<String,Object> param)throws Exception;
    
    /**
     * 系统管理-编辑系统
     * @author [lv tang wei]
     * Describe:
     * @param request
     * @return
     * [2017年6月30日]
     */
    public void editSystem(Map<String,Object> param)throws Exception;
    
    /**
     * 系统管理-删除系统
     * @author [lv tang wei]
     * Describe:
     * @param request
     * @return
     * [2017年6月30日]
     */
    public void deleteSystem(Map<String,Object> param)throws Exception;
    
    /**
     * 系统管理-根据code获取系统
     * @author [lv tang wei]
     * Describe:
     * @param id
     * @return
     * @throws Exception
     * [2017年6月30日]
     */
    public Map<String,Object> getSystemByFcode(String code)throws Exception;
    
    /**
     * 系统管理-根据系统取菜单
     * @author [lv tang wei]
     * Describe:
     * @param request
     * @return
     * [2017年6月30日]
     */
    public List<Map<String,Object>> getMenuBySys(Map<String,Object> param)throws Exception;
    
    /**
     * 系统管理-菜单管理-新增菜单
     * @author [lv tang wei]
     * Describe:
     * @param request
     * @return
     * [2017年6月30日]
     */
    public void addMenu(Map<String,Object> param)throws Exception;
    
    /**
     * 系统管理-菜单管理-编辑菜单
     * @author [lv tang wei]
     * Describe:
     * @param request
     * @return
     * [2017年6月30日]
     */
    public void editMenu(Map<String,Object> param)throws Exception;
    
    /**
     * 系统管理-菜单管理-删除菜单
     * @author [lv tang wei]
     * Describe:
     * @param request
     * @return
     * [2017年6月30日]
     */
    public void deleteMenu(Map<String,Object> param)throws Exception;
    
    /**
     * 系统管理-菜单管理-根据code获取菜单
     * @author [lv tang wei]
     * Describe:
     * @param code
     * @return
     * @throws Exception
     * [2017年6月30日]
     */
    public Map<String,Object> getMenuByFcode(String code)throws Exception;
    
    /**
     * 系统管理-功能菜单-取功能菜单
     * @author [lv tang wei]
     * Describe:
     * @param request
     * @return
     * [2017年6月30日]
     */
    public List<Map<String,Object>> getFunctionByMenu(Map<String,Object> param)throws Exception;
    
    /**
     * 系统管理-功能菜单-增加
     * @author [lv tang wei]
     * Describe:
     * @param request
     * @return
     * [2017年6月30日]
     */
    public void addFunction(Map<String,Object> param)throws Exception;
    
    /**
     * 系统管理-功能菜单-编辑
     * @author [lv tang wei]
     * Describe:
     * @param request
     * @return
     * [2017年6月30日]
     */
    public void editFunction(Map<String,Object> param)throws Exception;
    
    /**
     * 系统管理-功能菜单-删除
     * @author [lv tang wei]
     * Describe:
     * @param request
     * @return
     * [2017年6月30日]
     */
    public void deleteFunction(Map<String,Object> param)throws Exception;
    
    /**
     * 全部病历类型
     * @author [lv tang wei]
     * Describe:
     * @return
     * [2017年7月5日]
     */
    public List<Map<String,Object>> getAllBllx();
    
    /**
     * 单个病历类型
     * @author [lv tang wei]
     * Describe:
     * @param id
     * @return
     * [2017年7月5日]
     */
    public Map<String,Object> getBllxByID(String id);
    
    /**
     * 全部病历明细
     * @author [lv tang wei]
     * Describe:
     * @return
     * [2017年7月5日]
     */
    public List<Map<String,Object>> getAllBllxmx();
    
   /**
    * 单个病历明细
    * @author [lv tang wei]
    * Describe:
    * @param id
    * @return
    * [2017年7月5日]
    */
    public Map<String,Object> getBllxmxByID(String id);
    
    /**
     * 按病历类型取病历明细
     * @author [lv tang wei]
     * Describe:
     * @param type
     * @return
     * [2017年7月5日]
     */
    public List<Map<String,Object>> getAllBllxmxByType(String type);
    
    /**
     * 病历类型与病历明细
     * @author [lv tang wei]
     * Describe:
     * @return
     * [2017年7月5日]
     */
    public List<Map<String,Object>> getAllBllxWithBllxmx();
}
